ZL1BPU New Exciter
Software Manual

Test transmissions on LF, MF, HF or VHF, all with one piece of equipment!
This web page describes the PC control program for the two ZL1BPU New Exciter models. They are called 'new' because they replaces a less capable unit designed 18 years ago, for LF/MF use only. The two new units use the same firmware, and exactly the same commands.

The new units (shown below) are based on the Silicon Labs Si5351 synthesiser chip. These units are highly flexible, and will operate from 2.5 kHz to 200MHz. The larger unit is mains-powered, and uses a small oven to stabilise the reference in the synthesiser module, or has a separate OCXO. The smaller unit is hand-held and USB powered.

The units have three independent outputs (VFOs), 1 Hz resolution, 1e-8 stability, and have controlled output power levels in four 3 and 6 dB steps.

 
The bench-mount NEXC (left) and the hand-held Mini-NEXC (right)

The program described here offers both static and real-time active control of these Exciters, which is achieved via USB serial commands. While you can send all available commands to any of the three VFOs in the Exciter, in this program real-time control is intended for only one (any one) VFO at a time.

About MEPT

MEPT (Manned Experimental Propagation Transmission) is a concept used by Radio Amateurs, where, provided they are manned (manual supervisory control), automatic transmitting stations are permitted for test purposes without a special licence. Unmanned devices are classed as beacons and require a special licence.

Most MEPT transmissions are very low power, as the receiving techniques used are very sensitive. The transmissions are used chiefly for propagation measurement, but also fulfill a useful role in experiments determining receiver, transmitter and antenna performance. These transmissions are generally of very narrow bandwidth and benefit from high frequency stability and accuracy.

These units are also especially designed for HF Doppler propagation study, which requires a carrier (or two adjacent carriers) transmitted with low noise and excellent stability.

What is a Symbol?

In the context of a digital radio transmission, a symbol is that discrete segment of a transmission where all the properties of the transmission (phase, frequency, power) of all the components of the signal remain for the moment the same.

The transmission speed of digital signals is defined in terms of symbols per second, with the unit 'baud'. Whether the actual data rate bears any relationship to the symbol rate depends entirely on the modulation system and coding scheme. There could be several data bits per symbol or vice versa.

In single-tone MEPT operation, each symbol consists of a single carrier segment of constant frequency, phase, power and duration. Some transmitted elements (such as Morse dashes) may consist of multiple symbols. This program operates with a constant symbol rate set by a timer, although this can be changed during the message to reflect the requirements of different modulation techniques.

MEPT transmissions are generally very slow (low symbol rate). Speeds are characterized by the symbol period - three seconds being about the fastest normally used. This speed is called 'QRSS3' ("send more slowly, 3 seconds"), and the speeds commonly used (QRSS3, QRSS10, QRSS30 etc) corrspond to the speeds offered in the sound card software normally used to receive these transmissions, ARGO, SPECTRAN and Spectrum Laboratory, for example. Reception is typically achieved using visual techniques (studying a spectrogram) rather than by ear, although communication between controller and synthesiser is easily fast enough to send conventional Morse code at 15 WPM.

Description

This program, NEXC_001.EXE, can control all three of the VFOs in the New Exciter MEPT Controller. It will send real-time symbol patterns only on one (any one) of the VFOs at a time, but you can also directly (manually) control the other two VFOs: turn them on and off, and generate a carrier on any valid frequency. Although it would make writing the script very complex, you can in theory modulate each VFO on a different frequency in turn, from a single script.

The Exciter is capable of symbol rates higher than 20 baud, which is fast enough for 15 WPM Morse. It will operate frequency shifts from 0.1Hz upwards to at least 100Hz (1 Hz is normal for QRSS3), and can also do negative shifts (suited to LSB reception).

The program operates using a timer and a script (text) file, which defines what the program does. Using a simple alphabetic command system, the generator can be turned on and off, frequency and power changed, and the symbol speed modified. There is also a separate timer for accurately timed transmissions repeated every 10 minutes.

Most MEPT transmissions, including those from this system, make use of frequency shifted (FSK or MFSK) modes, as these are most easily and sensitively detected visually, and don't require a linear transmitter. But you can send any mode you can envisage that can be defined in discrete and equally spaced frequency tones, including CW Multi-tone Hell and WSPR. It will also send simple graphics.

The controller can transmit any one of 16 closely associated frequencies, defined as 0 - 9 and A - F (i.e. in hexadecimal), each spaced by steps of the preset frequency shift. The nominal centre frequency of the transmission is tone frequency number 8. As an example, imagine the shift is set to 1Hz and the carrier frequency to 1MHz. The 16 frequencies will then be:

	0 999992.0 Hz	        8 1000000.0 Hz
	1 999993.0		9 1000001.0
	2 999994.0		A 1000002.0
	3 999995.0		B 1000003.0
	4 999996.0		C 1000004.0
	5 999997.0		D 1000005.0
	6 999998.0		E 1000006.0
	7 999999.0		F 1000007.0
If the shift is negative, the frequency order is reversed. If the shift setting is larger or smaller, the frequency separation changes correspondingly. The controller program calculates all the frequencies required, and formats the correct control message to the synthesizer in ZL1BPU MEPT message protocol, the same protocol (with a couple of additions), that was devised nearly 20 years ago. The advantage of this method of control is that it makes the message files very compact, easy to write, and highly flexible, as the same script file can be used on any frequency, or at any speed and shift.

The transmitted pattern is defined in a script file which the user makes and names xxx.scp. This is a conventional text file, and contains one line of text which the user creates, and can contain characters 0 - 9, A - F, P, Q, S, X and V. Other characters are ignored. Each of the symbol characters (0 - 9, A - F) define the frequency step for one symbol, which is a transmission segment for the duration of the symbol period multiplied by the period speed modifier Sn, where n is 0 - 9, A - F implying x1 to x16:

	n	x
	0	1
	1	2
	3	3
	...	...
	9	10
	A	11
	B	12
	...	...
	F	16
The pattern can contain more than 300 characters, and since the speed can be altered using a multiplier, this can represent a message much longer than 300 times the symbol period. The message can of course also be much shorter. Once the message is complete, it (usually) immediately starts again. If a delay is necessary, 'X' (key up) symbols can be used.

There is also a built-in message timer. If the last command in the script file is 'Q', the transmission wil halt at the end of the message until the computer time reaches the time set. If for example the start time is left at the default value "00:00", the message will start every 10 minutes, at time xx:x0:00.

10-minute timing is an important tool in the MEPT arsenal. If transmissions are accurately timed, the received spectrogram images can easily be mathematically averaged ('stacked'), to enhance the signal and reduce interference and noise, which of course is random and does not enhance on averaging. Of course, with transmissions less than 10 minutes long, this facility allows the user to listen on the same frequency between transmissions.

User Interface

While the program displays the transmitted message graphically, and indicates progress as it is transmitted, there is no provision in the program to edit the pattern, which must be written by hand. However, the graphical display is quite realistic (see picture on right), and a few test runs will soon show how readable your new pattern is.

There are two small windows within the program - the upper one is the graphical message display, and represents 300 symbol periods (at the unmultiplied setting) or fewer if the multiplier is used. Thus it is possible to have a message longer than you can see on the screen.

The message display is cleared and redrawn whenever a new script is loaded. Under the message display is a progress bar, consisting of dark green dots, one per symbol. When the period multiplier is used, the space between dots stretches out, but there is still just one dot per symbol. The message display is as realistic as possible, including correctly representing symbol period multiplier settings (lengthened dots).

The other small window, bottom right, shows the time the last command was sent, the last frequency command and the actual transmitted frequency in Hz. Although many of the commands elicit a response from the Exciter, no response from the synthesizer is shown on the screen. The program assumes that the synthesizer is connected and is communicating correctly. The program will not start if the Exciter USB connection is not found.

The only other data shown on the screen is status information, on the grey background pane. The nominal carrier frequency (i.e. transmission centre frequency of the pattern-controlled VFO), output power level, symbol rate, frequency step size and script file name are also shown.

Menu

At the very top of the program window is a drop-down menu, which allows the user to change all the parameters 'on the fly'. The available commands are:

File
   New Pattern Loads a new user pattern script
   Clear Setup Clears the 'NEXC.SET' setup file (in case you've messed it up)
   Quit Saves the current settings and closes the program.

The program will also save and close if you press ESC or close the window.

TX/RX
   Start Starts the pattern or transmission
   Stop Stops the pattern or carrier transmission
   Carrier Starts an unmodulated carrier transmission on the nominal frequency

Parameters
   Set Speed Sets the on-air symbol rate in Hz. Up to 50 Hz is possible (but not necessarily practical). 10 Hz corresponds to about 10 WPM Morse. The default value is 1 Hz (QRSS3).
   Step Size Sets the tone-to-tone spacing in Hz. Values from 0.1 Hz to 10 Hz are practical. The default value is 1 Hz (QRSS3).
   Step Size Sets the carrier frequency in Hz for currently addressed VFO. The range is a 2.5 kHz to 200 MHz. The value must be in Hz, but two decimal places are accepted. This frequency is both the frequency of transmitted carriers and the centre frequency (tone 8) of any pattern transmitted.
   Power Level Sets the carrier power level for all three VFOs. Only values 0, 1, 2, and 3 are accepted. The values represent -2, +4, +8 and +10 dBm (into 50 Ohm) respectively. The levels will not be accurate if the outputs are not correctly terminated.

Timer
   On Starts the Timer when 'Q' is met in the script file. Transmission will restart at the valid time (hh:mm:ss).
   Off Stops the Timer and starts continuous transmission from the start of the script.
   Set Sets the timer start value (hh:mm:ss). You can only set mm:ss.

Commands
   Allows the user to manually enter commands addressed to any of the three VFOs. See the Commands section for details.

Help
   Shows program information and the name of this Help file.

Setting Up

Unzip the NEXC archive into a folder on the computer. All files provided must reside in the same folder. Edit the file NEXC.set to reflect your preferred options. The file contains (in this order):
  1. The program serial COM port number (the port always operates at 19200 bps)
  2. The COM port bit rate (for future use - value is read but ignored)
  3. The default operating frequency in Hz (frequency last used)
  4. The default (last used) symbol rate (Hz)
  5. The default (last used) step size (Hz)
  6. The default (last used) user script filename
All these values can be changed when starting the program, except that the COM port can only be set manually in the NEXC.set file. You may need to check the computer operating system to determine which port you are connected to, as USB ports sometimes change address.

If you don't have a viable NEXC.set file, make a file by that name in the working folder, and (using Notepad) edit it so that it contains six or more blank lines (press Enter six times), then save the file. When you start the program the first time it will ask you for the default information, and will save the file with the new data when the program closes. With no NEXC.set file (or if it does not contain enough blank lines), the program will generate an error message and close. The same will happen if the default file can't be found or the COM port specified is incorrect. If this happens, it might be simpler to delete the NEXC.set file and start the program again.

The program is started by executing NEXC_001.EXE. You could make a shortcut to run the program by right-clicking on NEXC_001.EXE, and selecting "Create Shortcut'. Drag the shortcut to a convenient location.

Running the Program

Connect the synthesizer to the specified com port, and start the program 409B_011.exe, perhaps using the shortcut you made. If you have a viable NEXC.set file, the program will start operating the synthesizer immediately. Otherwise a series of dialog boxes will open one after another (example on right).

First you specify the carrier frequency in Hz (anywhere in the synthesizer's range), to a resolution of 0.01Hz. This is the frequency of any '8' tones in the script. The next two dialog boxes request the symbol rate (in Hz) and the step size (in Hz). You may specify a different value or just press ENTER (or click OK) to accept the default values. In most circumstances the symbol period and step size should be reciprocally related (e.g. both 1Hz or period 2 Hz and spacing 0.5 Hz, since this suits ARGO reception well). Next the program asks for the COM port number (the serial port or USB virtual port to which the synthesizer is connected).

The program will generate an error and quit if you don't enter anything or delete the default value.

Finally a file selection dialog requests a pattern file (script) to transmit. The program will not start unless you specify a valid file, and will generate an error if the file is not found. Conventionally the files are named xxx.scp, but any suitable text file with any suffix will work. The file should ideally be in the same folder as the executable.

Once the script file has been specified, the file will be read and the program operation starts. The script file is read and displayed graphically, and the transmissions start according to commands in the script. As the script commands are executed, the green progress bar under the graphic display is stepped along to the next symbol to be generated once the symbol timer has expired.

HINT:
Once the program has read the file, it closes it, so you can then easily make any necessary changes to the file while the program continues to run. Save the file, then have the program re-read the modified file so you can check the results.
The message display does not indicate the transmitted power. The default power level is full power (+10 dBm), for both program and synthesizer. This corresponds to power level 'P3'. As power is reduced (P2, P1, P0), output power from the synthesizer is reduced in 3 or 6dB steps. There are four steps, and the power setting affects all three VFOs.

As the period multiplier takes effect, the graph steps less often, but in order to maintain the same appearance as would be seen on a spectrogram, the graph and progress bar step in larger steps. This might sound confusing, but looks quite natural when observed.

When the message has completed, the progress bar is erased and transmission starts again. If a delay is required between transmissions, you could place a number of 'XXXXX' symbols in the script. For very long delays, add a symbol multiplier (e.g. 'S8') before the 'XXXXX' symbols, and each will by extended by this factor. Place an 'S0' following the 'XXXXX' symbols.

For really accurate 10-minute message timing, use the built-in Timer feature (see later).

Making Script Files

Each script file contains only one line of viable text, and must be made with a true text editor, such as Notepad. Unrecognised characters are ignored, and any characters after the first line are also ignored. The line of characters may wrap around in the editor several times, as it may contain up to 300 characters. Since only one line of characters is read, you could add a text description to the file on the second or subsequent lines, and this will be ignored.

Lower case characters are ignored (invalid). The following commands are recognised:

0 - 9, A - F
When not preceeded by another command, these specify a symbol at a frequency (offset from the nominal frequency) as previously described, and of the duration (symbol multiplier)/(symbol rate) seconds.
Pp
Power level p, where p is 0 - 3. Full (default) power is 'P3'. Other levels reduce power in 3 or 6dB steps. The command affects all three VFOs. Power levels are P0 (-2 dBm), P1 (+4 dBm), P2 (+8 dBm) and P3 (+10 dBm).
Q
Quit. Placed as the last character of the script line, this will cause the timer (if activated) to delay transmission start until the specified time has arrived.
Ss
Symbol multiplier s, where s is 0 - 9, A - F. 0 represents x1 (default), 1 represents x2 etc. Changes the duration of all following symbols by this factor. So actual symbol duration = (s+1)/symbol_rate.
Vv
VFO Select. Directs all following script commands to VFO v, where v = 0, 1 or 2. The default is 'V0' (VFO_0). Control remains with the selected VFO through all subsequent commands, until explicitly changed. Should be used with care!
X
Specifies a one-symbol key-up (no transmission) period of the duration (symbol multiplier)/(symbol rate) seconds. Used for example to separate Morse code dots.
space
Space characters are specifically ignored, so can be used to separate parts of a message to make it more readable.
Use the example files supplied to learn how to make scripts. Run the program using each script to see what pattern it makes, and open the file with Notepad to see how the message was made.

When you make your own script, give it a file name which describes what it does.

ZL1BPU Script Command Reference Document

Using the 10-Minute Timer

The Timer uses three menu commands, 'On', 'Off', and 'Set'. 'On' starts the Timer function when the 'Q' is met at the end of the script file. If there is no 'Q', or it has not been reached yet, transmission continues as normal, starting the script again. 'Off' stops the Timer function and starts continuous transmission at the start of the user script.

The 'Set' commands requires a little more explanation. With the Timer 'On', once the 'Q' has been reached in the script file, the program pauses with the transmission off until the computer time reaches the set time. Only the last four characters in the time (hh:m,m:ss) are checked. When the time has been reached, the program pause expires and the message transmission starts at the beginning. For example, to start every 10 minutes at a time xx:x5:25 (five minutes and 25 seconds after the hour and every 10 minutes therafter), use the 'Set' command to '05:25'. If the set time is invalid or has an invalid format the timer delayed restart won't occur.

The default start time '00:00' is on the hour and every 10 minutes thereafter.

Program Requirements

You obviously need a ZL1BPU New Exciter (synthesizer), which operates this protocol. It must be set for communications at 19200 bps.

You require a computer with WindowsTM 7 or later and at least one USB port available. Processor speed and memory requirements are modest. Under 5MB of disc space is required for the program and script files. No changes are made to the computer registry. The program can be completely removed by deleting the program folder and any shortcuts you have made.

You require a virtual (USB) serial port on your computer. You must find out from the operating system what port number this virtual serial port resides on. When you first plug the unit in, the computer will discover it and allocate it a port number. In the Device Manager, you will see a list as shown. Find the item 'Arduino UNO' under 'Ports, COM and LPT' (highlighted in the picture), and note the COM Port number, which you will enter in the NEXC.set file.

If the Arduino device is not listed, it will be because the Arduino driver is missing. It is installed as part of the Arduino IDE package, so if you are using a different computer from the one where the IDE is installed, unfortunately you'll need to install the IDE again.

Commands

The menu item 'Commands' allows the user to send immediate commands to the Exciter. In order to be sure that the commands are directed where they are intended (i.e. to a specific VFO), always select TX/RX Stop before issuing direct commands. Send V0 and then select TX/RX Start when you are done sending manual commands. To command a VFO other than the default (VFO_0), you must first send a Vv to set the address for following commands, and return to VFO_0 (V0) when done.

The commands are the same as those the Exciter recognises when controlled by a dumb terminal, and are not the same as the script commands. They are:

Cnnnnnnnn
Calibration factor for the synthesiser reference crystal. This is a signed decimal number (i.e. may be negative). The default value is zero. Because this value is stored in EEPROM, the command should be used sparingly. Write down the value last sent, as you will not be able to retreive it for later modification. The resolution of the calibration factor is in milliHz.

Note: This command is not directed by the V command, as it affects all three VFOs.

Fnnnnnnnn
Carrier frequency in Hz. May be specified to two decimal places. 'F0' will turn the addressed VFO off. 'T' will turn it back on, as will issuing a new Fnnnnnnnn command. Use this command to set the frequencies of (or turn off) VFOs not addressed by the pattern in the script.
Pp
Output power level for all three VFOs. p = 0, 1, 2 or 3. Power levels are P0 (-2 dBm), P1 (+4 dBm), P2 (+8 dBm) and P3 (+10 dBm). The default is P3.

Note: This command is not directed by the V command, as it affects all three VFOs.

Rr
Specifies the resolution of the manual frequency control knob (rotary encoder) on the unit. This command does not affect the display or the frequencies set by the Fnnnnnnnn command. Values of r are 1 - 9. The resulting resolution is 10(r-2) Hz. Not a useful command for remote control.
T
Turns the addressed VFO on, using the last used frequency for that VFO. Useful for sending Morse.
Vv
Selects a VFO to be addressed by subsequent commands. v may be 0, 1 or 2. V0 is the default.
X
Turns the addressed VFO off, without changing the displayed frequency. Useful for sending Morse and MT-Hell or graphics patterns.

Copyright © Murray Greenman 2011-2020. All rights reserved.